home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
PWAULTP3.ZIP
/
PWAPRGMS.A02
/
PWA95
/
PWAEBS10.ZIP
/
EBS.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1995-06-24
|
9KB
|
601 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
DWord DWORD001
DWord DWORD002
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Real REAL001
String STRING001
String STRING002
String STRING003
String STRING005
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
Byte BYTE001
Byte BYTE002
Byte BYTE003
Byte BYTE004
Byte BYTE005
Byte BYTE006
Int INT001
Int INT002
Int INT003
Int INT004
Int INT005
Declare Function FUNCTION001() String
Declare Function FUNCTION002(Integer INTEGER010) String
Declare Function FUNCTION003(Integer INTEGER011) String
Declare Function FUNCTION004(Integer INTEGER007) String
Declare Function FUNCTION005(Integer INTEGER008) String
Declare Function FUNCTION006(Integer INTEGER009) String
Declare Procedure PROC001()
Declare Procedure PROC002()
Declare Procedure PROC003()
Declare Procedure PROC004()
Declare Procedure PROC005()
Declare Procedure PROC006()
Declare Procedure PROC007()
Declare Procedure PROC008(Boolean BOOLEAN003)
Declare Procedure PROC009(String STRING004)
Declare Procedure PROC010(String STRING006)
Declare Procedure PROC011()
Declare Procedure PROC012(DWord DWORD003, Integer INTEGER005, Integer INTEGER006)
;------------------------------------------------------------------------------
If (1 < 0) Goto LABEL001
BOOLEAN001 = 1 ; PPLC BUG!
Goto LABEL002
:LABEL001
BOOLEAN001 = 0
:LABEL002
PROC001()
PROC002()
End
;------------------------------------------------------------------------------
Procedure PROC002()
Int INT001
If (Exist(STRING002)) Then
PROC003()
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC005()
Print ReadLine(STRING003, 1)
Backup 2
EndProc
;------------------------------------------------------------------------------
Procedure PROC004()
If (Exist(PPEPath() + "MENU." + LangExt())) Then
DispFile PPEPath() + "MENU." + LangExt(), 0
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC003()
Byte BYTE001
Boolean BOOLEAN002
PROC004()
PROC005()
BOOLEAN002 = 0
:LABEL003
If (BOOLEAN002) Goto LABEL004
BYTE001 = Asc(Inkey())
Delay 1
Select Case (BYTE001)
Case 49
Print Chr(BYTE001)
PROC009(STRING002)
PROC004()
PROC005()
Case 50
Print Chr(BYTE001)
PROC010(STRING002)
PROC004()
PROC005()
Case 51
Print Chr(BYTE001)
PROC007()
PROC008(0)
BOOLEAN002 = 1
Case 52
Print Chr(BYTE001)
PROC008(1)
BOOLEAN002 = 1
Case 53
Case 110
Print Chr(BYTE001)
BOOLEAN002 = 1
End Select
Goto LABEL003
:LABEL004
Newline
PrintLn "@X08Enhanced Batch Save v1.0 by Drew [PWA]@X07"
EndProc
;------------------------------------------------------------------------------
Procedure PROC007()
Int INT002
Log "EBS - Batch restored.", 0
If (Exist(STRING001)) Delete STRING001
Newline
Newline
Print ReadLine(STRING003, 2)
Shell 1, INT002, "copy " + STRING002 + " " + STRING001, ""
PrintLn ReadLine(STRING003, 4)
EndProc
;------------------------------------------------------------------------------
Procedure PROC008(Boolean BOOLEAN003)
If (BOOLEAN003) Then
Newline
Newline
Print ReadLine(STRING003, 3)
Endif
Delete STRING002
If (BOOLEAN003) Then
PrintLn ReadLine(STRING003, 4)
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC009(String STRING004)
Byte BYTE002
String STRING005
DWord DWORD001
If (Exist(STRING004)) Then
DWORD001 = FileInf(STRING004, 4) / 129
StartDisp 0
StartDisp 2
Cls
DefColor
FOpen 1, STRING004, 2, 0
FDefIn 1
For BYTE002 = 1 To DWORD001
FSeek 1, 66, 1
FDRead STRING005, 13
Print STRING005 + Space(15 - Len(STRING005))
If (!BYTE002 % 5) Newline
If (Abort()) Then
BYTE002 = DWORD001
ResetDisp
Endif
FSeek 1, 50, 1
Next
FClose 1
Newline
Newline
Wait
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC010(String STRING006)
Byte BYTE003
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
String STRING007
String STRING008
DWord DWORD002
If (Exist(STRING006)) Then
DWORD002 = FileInf(STRING006, 4) / 129
StartDisp 0
StartDisp 2
PROC011()
INTEGER003 = 0
INTEGER004 = 0
FOpen 1, STRING006, 2, 0
FDefIn 1
For BYTE003 = 1 To DWORD002
FSeek 1, 66, 1
FDRead STRING007, 13
FDRead INTEGER001, 4
FDRead INTEGER002, 4
STRING008 = ReadLine(STRING003, 5)
STRING008 = ReplaceStr(STRING008, "%N%", String(BYTE003))
STRING008 = ReplaceStr(STRING008, "%NAME%", STRING007)
STRING008 = ReplaceStr(STRING008, "%BYTES%", FUNCTION002(INTEGER001))
STRING008 = ReplaceStr(STRING008, "%MB%", FUNCTION003(INTEGER001))
STRING008 = ReplaceStr(STRING008, "%H%", FUNCTION004(INTEGER002))
STRING008 = ReplaceStr(STRING008, "%M%", FUNCTION005(INTEGER002))
STRING008 = ReplaceStr(STRING008, "%S%", FUNCTION006(INTEGER002))
PrintLn STRING008
INTEGER003 = INTEGER003 + INTEGER001
INTEGER004 = INTEGER004 + INTEGER002
If (Abort()) Then
BYTE003 = DWORD002
ResetDisp
StartDisp 0
StartDisp 2
Endif
FSeek 1, 42, 1
Next
FClose 1
PROC012(DWORD002, INTEGER003, INTEGER004)
Wait
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC011()
If (Exist(PPEPath() + "TOP." + LangExt())) Then
DispFile PPEPath() + "TOP." + LangExt(), 0
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC012(DWord DWORD003, Integer INTEGER005, Integer INTEGER006)
String STRING009
If (Exist(PPEPath() + "BOTTOM." + LangExt())) Then
FOpen 1, PPEPath() + "BOTTOM." + LangExt(), 0, 2
FDefIn 1
FDGet STRING009
:LABEL005
If (Ferr(1)) Goto LABEL006
STRING009 = ReplaceStr(STRING009, "%NF%", String(DWORD003))
STRING009 = ReplaceStr(STRING009, "%BYTES%", FUNCTION002(INTEGER005))
STRING009 = ReplaceStr(STRING009, "%MB%", FUNCTION003(INTEGER005))
STRING009 = ReplaceStr(STRING009, "%H%", FUNCTION004(INTEGER006))
STRING009 = ReplaceStr(STRING009, "%M%", FUNCTION005(INTEGER006))
STRING009 = ReplaceStr(STRING009, "%S%", FUNCTION006(INTEGER006))
PrintLn STRING009
FDGet STRING009
Goto LABEL005
:LABEL006
FClose 1
Endif
EndProc
;------------------------------------------------------------------------------
Function FUNCTION004(Integer INTEGER007) String
Integer INTEGER008
FUNCTION004 = String(INTEGER007 / 3600)
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION005(Integer INTEGER008) String
Integer INTEGER009
INTEGER008 = INTEGER008 - (INTEGER008 / 3600) * 3600
FUNCTION005 = String(INTEGER008 / 60)
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION006(Integer INTEGER009) String
Integer INTEGER010
INTEGER009 = INTEGER009 - (INTEGER009 / 3600) * 3600
INTEGER009 = INTEGER009 - (INTEGER009 / 60) * 60
FUNCTION006 = String(INTEGER009)
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION002(Integer INTEGER010) String
String STRING014
String STRING015
Byte BYTE004
Byte BYTE005
Integer INTEGER011
STRING014 = String(INTEGER010)
BYTE004 = Len(STRING014)
BYTE005 = 0
While (BYTE004 > 0) Do
Inc BYTE005
STRING015 = Mid(STRING014, BYTE004, 1) + STRING015
Dec BYTE004
If (!BYTE005 % 3 && (BYTE004 > 0)) STRING015 = "," + STRING015
EndWhile
STRING015 = Space(13 - Len(StripAtx(STRING015))) + STRING015
FUNCTION002 = STRING015
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION003(Integer INTEGER011) String
String STRING017
Real REAL001
Int INT003
Int INT004
Int INT005
REAL001 = ToReal(INTEGER011) / 1.024e+06
INT003 = ToInt(REAL001)
INT004 = ToInt((REAL001 - INT003) * 10)
STRING017 = String(INT003) + "." + String(INT004)
FUNCTION003 = STRING017
EndFunc
;------------------------------------------------------------------------------
Procedure PROC006()
Int INT005
String STRING018
If (Exist(STRING001) && FileInf(STRING001, 4)) Then
If (Exist(PPEPath() + "savedata\nul")) Goto LABEL007
Shell 1, INT005, "if not exist " + PPEPath() + "savedata\nul md " + PPEPath() + "savedata", ""
:LABEL007
STRING018 = FUNCTION001()
STRING002 = PPEPath() + "savedata\" + STRING018
If (Exist(STRING002)) Then
Delete STRING002
Endif
Shell 1, INT005, "copy " + STRING001 + " " + STRING002, ""
Log "EBS - Saved batch. :)", 0
ElseIf (Exist(STRING001) && !FileInf(STRING001, 4)) Then
Log "EBS - filesize is zero, PCB still has it open (nothing saved)", 0
Else
Log "EBS - Nothing saved.", 0
Endif
EndProc
;------------------------------------------------------------------------------
Function FUNCTION001() String
String STRING020
String STRING021
Byte BYTE006
String STRING022
STRING021 = ""
STRING020 = U_Name()
For BYTE006 = 1 To Len(STRING020)
If ((InStr(Mask_Pwd(), Mid(STRING020, BYTE006, 1)) > 0) && (InStr(Chr(32) + Chr(34) + "+,/;<>=|*%.:\^`?", Mid(STRING020, BYTE006, 1)) == 0)) Then
STRING021 = STRING021 + Mid(STRING020, BYTE006, 1)
If (Len(STRING021) == 8) BYTE006 = Len(STRING020)
Endif
Next
FUNCTION001 = STRING021
EndFunc
;------------------------------------------------------------------------------
Procedure PROC001()
String STRING022
GetUser
WrUNet PcbNode(), "Q", UN_Name(), UN_City(), "EBS: Processing batch", " "
STRING003 = PPEPath() + "STRINGS." + LangExt()
If (PcbNode()) Then
STRING001 = GetEnv("PCBDRIVE") + GetEnv("PCBDIR") + "\flist." + String(PcbNode())
Else
STRING001 = GetEnv("PCBDRIVE") + GetEnv("PCBDIR") + "\flist."
Endif
STRING022 = FUNCTION001()
STRING002 = PPEPath() + "savedata\" + STRING022
STRING022 = Lower(GetToken())
If (STRING022 == "save") Then
PROC006()
End
Endif
EndProc
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 2 End
; 1 Cls
; 2 Wait
; 44 Goto
; 67 Let
; 9 Print
; 5 PrintLn
; 34 If
; 2 DispFile
; 3 FOpen
; 3 FClose
; 2 ResetDisp
; 6 StartDisp
; 1 GetUser
; 1 DefColor
; 3 Delete
; 4 Log
; 1 Delay
; 1 Inc
; 1 Dec
; 8 Newline
; 3 Shell
; 1 WrUNet
; 1 Backup
; 4 FSeek
; 3 FDefIn
; 2 FDGet
; 4 FDRead
; 12 EndProc
; 6 EndFunc
;
;
; ■ Functions used :
;
; 4 *
; 8 /
; 2 %
; 548 +
; 6 -
; 8 ==
; 4 <
; 3 <=
; 3 >
; 7 >=
; 64 !
; 10 &&
; 3 ||
; 7 Len(
; 1 Lower()
; 4 Mid()
; 2 Space()
; 1 Ferr()
; 7 Chr()
; 1 Asc()
; 2 InStr()
; 2 Abort()
; 1 U_Name()
; 1 StripAtx()
; 1 Inkey()
; 9 String()
; 1 Mask_Pwd()
; 12 PPEPath()
; 3 PcbNode()
; 6 ReadLine()
; 1 UN_Name()
; 1 UN_City()
; 1 GetToken()
; 4 GetEnv()
; 11 Exist()
; 7 LangExt()
; 4 FileInf()
; 13 ReplaceStr()
; 1 ToReal()
; 2 ToInt()
;
;------------------------------------------------------------------------------
;
; Analysis flags : S
;
; S - Shell to DOS ■ 5
; This may be normal if the PPE need to execute an external command,
; but may be actually anything... nasty (formating HD, rebooting,...)
; or usefull (sorting, maintenance,...). Check!
; ■ Search for : SHELL
;
;
;------------------------------------------------------------------------------
;
; One or more PPLC bugs were found, this is not a PPLX error, but PPLX is
; reporting the error ;) Some statements like VAR = !!!!10, VAR = !0*!0
; or similar things are not handled correctly by PPLC, some may use this
; to avoid a correct decompilation... This doesn't mean that there is
; actually an error, but the probability of error is high...
; ■ Search for : PPLC BUG
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 3 For/Next
; 1 While/EndWhile
; 16 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------